﻿package com.manyiaby.until;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Pattern;

/**
 * 输入正则格式校验
 * @author 唐鹏鹏
 * Created by os on 2017/6/27.
 */
public class Regex {
    /**
     * @Description 密码（字母数字6-20位,字母开头，必须包含数字字母）
     * @author 唐鹏鹏
     * @version 1.0
     * @date 创建时间：2017年6月26日 19:42:41
     */
    public static Boolean passwordRegex(String str){
        String regex = "(?![0-9])(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}";
        return Pattern.matches(regex, str);
    }

    /**
     * @Description 邮箱
     * @author 唐鹏鹏
     * @version 1.0
     * @date 创建时间：2017年6月26日 19:42:41
     */
    public static Boolean emailRegex(String str){
        String regex = "\\w[-\\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\\.)+[A-Za-z]{2,14}";
        return Pattern.matches(regex, str);
    }

    /**
     * @Description 手机号
     * @author 唐鹏鹏
     * @version 1.0
     * @date 创建时间：2017年6月26日 19:42:41
     */
    public static Boolean phoneRegex(String str){
        String regex = "^[1][3,4,5,7,8][0-9]{9}$";
        return Pattern.matches(regex, str);
    }

    /**
     * @Description 身份证号18位(缺少准确性校验)
     * @author 唐鹏鹏
     * @version 1.0
     * @date 创建时间：2017年6月26日 19:42:41
     */
    public static Boolean idCardRegex(String str){
        String regex = "^\\d{15}|\\d{17}[0-9Xx]$";
        return Pattern.matches(regex, str);
    }

    /**
     * 两个时间相差距离多少天多少小时多少分
     * @param str1 时间参数 1 格式：long
     * @return String
     * @author 唐鹏鹏
     * @version 1.0
     * @date 创建时间：2017年6月26日 19:42:41
     */
    public static String getDistanceTime(long str1) {
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date one;
        Date two;
        long day = 0;
        long hour = 0;
        long min = 0;
        try {
            one = new Date(str1*1000);
            two = new Date();
            long time1 = one.getTime();
            long time2 = two.getTime();
            long diff ;
            if(time1<time2) {
                diff = time2 - time1;
            } else {
                diff = time1 - time2;
            }
            day = diff / (24 * 60 * 60 * 1000);
            hour = (diff / (60 * 60 * 1000) - day * 24);
            min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);
        } catch (Exception e) {
            e.printStackTrace();
        }
        if(day > 0){
            return "1天前";
        }else if(hour >= 5){
            return "5小时前";
        }else if(hour >= 1){
            return (hour + "小时前");
        }else if(min > 10){
            return (((min/10)*10) + "分钟前");
        }else{
            return null;
        }
    }


    /**
     * 正则表达式
     * 判断输入的是否是 ：数
     *
     * @param str
     * @return
     */
    public static boolean isNumeric(String str) {
        // 就是判断是否为整数(正负)
        Pattern pattern =
                Pattern.compile("^\\d+$|-\\d+$");
        //判断是否为小数(正负)
        Pattern pattern2 =
                Pattern.compile("\\d+\\.\\d+$|-\\d+\\.\\d+$");
        return (pattern.matcher(str).matches()
                || pattern2.matcher(str).matches());
    }


}
